package Week4;

import java.util.*;

public class Day19 {
}
//牛客:WY3 小易的升级之路
class Main1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int n = in.nextInt(), a = in.nextInt();
            for (int i = 0; i < n; i++) {
                int b = in.nextInt();
                if (a >= b) {
                    a += b;
                } else {
                    int x = a;
                    int y = b;
                    int tmp = 0;
                    while (y != 0) {
                        tmp = x % y;
                        x = y;
                        y = tmp;
                    }
                    a += x;
                }
            }
            System.out.println(a);
        }
    }
}

//牛客:JZ47 礼物的最大价值
class Solution1 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param grid int整型二维数组
     * @return int整型
     */
    public int maxValue (int[][] grid) {
        // write code here
        int m = grid.length , n = grid[0].length;
        int[][] dp = new int[m + 1][n + 1];
        for(int i = 1; i <= m; i++){
            for(int j = 1; j <= n; j++){
                dp[i][j] = Math.max(dp[i - 1][j] , dp[i][j - 1]) + grid[i - 1][j - 1];
            }
        }
        return dp[m][n];
    }
}


class Main2 {
    public static boolean check(boolean[][] hash , int left , int right){
        //确定要判断的字符串的位置left，right
        for(int i = 0; i < 26; i++){
            //依次遍历每个字符看是否有都存在的
            if(hash[left][i] && hash[right][i]) return true;
        }
        return false;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        while(t-- != 0){
            int n = in.nextInt();
            //模拟哈希表
            boolean[][] hash = new boolean[n][26];
            //取得每一个字符串
            for(int i = 0; i < n; i++){
                char[] s = in.next().toCharArray();
                //将每一个字符串的每一个字符，按照字符串的顺序存放到二维数组中，哈希映射
                for(char ch : s){
                    //将字符串的字符置为true
                    hash[i][ch - 'a'] = true;
                }
            }
            //判断是否为回文串
            int left = 0 , right = n - 1;
            while(left < right){
                //我们可以从第一个字符串和最后一个字符串去判断它们是否有相同的字符，如果有继续缩小范围判断，如果没有就无法组成回文串跳出循环
                if(!check(hash , left , right)){
                    break;
                }
                left++;
                right--;
            }
            //如果是回文串那么left必定大于或等于right
            if(left >= right) System.out.println("Yes");
            else System.out.println("No");
        }
    }
}